package com.campus.app.service;

import com.campus.commons.entity.CheckHealth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.commons.utils.Result;
import org.springframework.scheduling.annotation.Scheduled;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 卫生检查表 服务类
 * </p>
 *
 * @author Rin
 * @since 2020-12-24
 */

public interface CheckHealthsService extends IService<CheckHealth> {
    /**
     * 检查卫生缓存
     * key1：上下午
     * key2：教室名称
     */
    public static Map<Integer, Map<String, CheckHealth>> checkHealthMap = new HashMap<>();

    /**
     * 获取所有查班统计
     *
     * @return 工具对象
     * @param size
     * @param limit
     */
    Result<List<CheckHealth>> getCheckHealth(int size, int limit);

    @Scheduled(cron = "* * 20 * * ? ")
    void exportExcelForCheckHealth();



    /**
     * 复合查询
     *
     * @param
     * @param start
     * @param end
     * @param size
     * @param limit
     * @param className
     * @param classRoomName
     * @param isTop
     * @return
     */
    Result<List<CheckHealth>> getCheckHealthByDate(String start, String end, int size, int limit, String className,String classRoomName, int isRed,int isTop);

    /**
     * 删除一条记录
     * @param id
     * @return
     */
    Result del(@NotNull @Min(1) Integer id);

    /**
     * 修改方法
     * @param checkHealth
     * @return
     */
    Result upDate( CheckHealth checkHealth);


    /**
     * 前台缓存添加数据
     * @param checkHealth 查卫生对象
     * @return 工具
     */
    Result addCheckClassMap(@NotNull CheckHealth checkHealth);

    /**
     * 修改缓存数据,(与上一个方法一样，但是别用上一个进行修改)
     *
     * @param checkHealth 查卫生对象
     * @return 工具
     */
    Result upCheckClassMap(@NotNull  CheckHealth checkHealth);

    /**
     * 删除缓存数据
     *
     * @param classRoomName 教室名称
     * @return 工具
     */
    Result delCheckClassMap(@NotNull String classRoomName);

    /**
     * 获取缓存
     * @return
     */
    Result getCheckClassMap();


    /**
     * 查询标红过isred
     *
     * @param isRed
     * @param size
     * @param limit
     * @return
     */
    Result<List<CheckHealth>> getRedByIsRed(int isRed,int size,int limit);

    /**
     * 通过id获取一条记录
     *
     * @param id
     * @return
     */
    Result<CheckHealth> getOneById(int id);


}
